<?php

/*
 * Servicio DAL.
 * @Autor: Inicial.cl.
 */

class ServicioDAL {

    //METODO PARA GRABAR SERVICIO.
    public static function grabar($oServicio) {
        try {
            $arr = array(
                "{#NOMBRE}" => $oServicio->getNombre(),
                "{#ESTADO}" => $oServicio->getEstado()
            );
            $query = Util::getQuery($arr, ServicioSQL::$GRABAR_SERVICIO);
            $arrDatos = Bd::exec($query);

            $id = Bd::$IDENTITY; //Retorno id insertado
            return $id;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA EDITAR SERVICIO.
    public static function editar($oServicio) {
        try {
            $arr = array(
                "{#ID}" => $oServicio->getId(),
                "{#NOMBRE}" => $oServicio->getNombre(),
                "{#ESTADO}" => $oServicio->getEstado()
            );
            $query = Util::getQuery($arr, ServicioSQL::$EDITAR_SERVICIO);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR SERVICIO.
    public static function listar() {
        try {
            $arr = array();
            $query = Util::getQuery($arr, ServicioSQL::$LISTAR_SERVICIO);
            $arrDatos = Bd::exec($query);
            $arrServicio = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oServicio = new Servicio();

                    $oServicio->setId($row["id"]);
                    $oServicio->setNombre($row["nombre"]);
                    $oServicio->setEstado($row["estado"]);

                    $arrServicio[] = $oServicio;
                }
            }

            return $arrServicio;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA OBTENER POR ID SERVICIO.
    public static function obtenerPorId($id) {
        try {
            $arr = array(
                "{#ID}" => $id
            );
            $query = Util::getQuery($arr, ServicioSQL::$OBTENER_SERVICIO_POR_ID);
            $arrDatos = Bd::exec($query);

            if (count($arrDatos) > 0) {
                $oServicio = new Servicio();

                foreach ($arrDatos as $row) {
                    $oServicio->setId($row["id"]);
                    $oServicio->setNombre($row["nombre"]);
                    $oServicio->setEstado($row["estado"]);
                }
                return $oServicio;
            }
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA ELIMINAR SERVICIO.
    public static function eliminar($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, ServicioSQL::$ELIMINAR_SERVICIO);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA VERIFICAR SI EL REGISTRO ESTA DUPLICADO
    public static function duplicado($oServicio) {
        try {
            $arr = array(
                "{#ID}" => $oServicio->getId(),
                "{#NOMBRE}" => $oServicio->getNombre()
            );
            $query = Util::getQuery($arr, ServicioSQL::$DUPLICADO_SERVICIO);
            $arrDatos = Bd::exec($query);
            return count($arrDatos);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR SERVICIO.
    public static function obtenerPorIdEscort($id) {
        try {
            $arr = array(
                "{#IDESCORT}" => $id
            );
            $query = Util::getQuery($arr, ServicioSQL::$LISTAR_SERVICIO_POR_ESCORT);
            $arrDatos = Bd::exec($query);
            $arrServicio = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oServicio = new Servicio();

                    $oServicio->setId($row["id"]);
                    $oServicio->setNombre($row["nombre"]);
                    $oServicio->setEstado($row["estado"]);
                    $oServicio->setRealizaServicio($row["realizaServicio"]);

                    $arrServicio[] = $oServicio;
                }
            }

            return $arrServicio;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }
    
    public static function listarServiciosPorEscortTooltip($idEscort) {
        try {
            $arr = array(
                "{#IDESCORT}" => $idEscort
            );
            $query = Util::getQuery($arr, ServicioSQL::$LISTAR_SERVICIOS_POR_ESCORT_TOOLTIP);
            $arrDatos = Bd::exec($query);
            $arrServicio = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oServicio = new Servicio();

                    $oServicio->setId($row["id"]);
                    $oServicio->setNombre($row["nombre"]);
                    $oServicio->setEstado($row["estado"]);

                    $arrServicio[] = $oServicio;
                }
            }

            return $arrServicio;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

}

?>